<?php
namespace qrcode;

include('phpqrcode.php');
class BulidQrcode{
    /**
     * 生成二维码
     * @param string $value  要生成二维码的值
     * @param string $logo  需要嵌入的logo.png
     * @return string|bool
     */
    public static function bulidQr($value, $logo = null){
        //容错级别:L（QR_ECLEVEL_L，7%），M（QR_ECLEVEL_M，15%），Q（QR_ECLEVEL_Q，25%），H（QR_ECLEVEL_H，30%）
        $errorCorrectionLevel = 'Q';
        //图片大小
        $matrixPointSize = 6;
        if(!is_string($value)) throw new \Exception('值不为字符串');
        $name = getNonceStr(10). '.png';
        $qrPath = '../data/qrcode/'. $name;//已经生成的原始二维码图
        \QRcode::png($value, $qrPath, $errorCorrectionLevel, $matrixPointSize, 2);
        if (file_exists($logo)) {

            $QR = imagecreatefromstring(file_get_contents($qrPath)); 

            $logo = imagecreatefromstring(file_get_contents($logo)); 

            $QR_width = imagesx($QR);//二维码图片宽度 

            $QR_height = imagesy($QR);//二维码图片高度 

            $logo_width = imagesx($logo);//logo图片宽度 

            $logo_height = imagesy($logo);//logo图片高度 

            $logo_qr_width = $QR_width / 5; //组合之后logo的宽度(占二维码的1/5)

            $scale = $logo_width/$logo_qr_width;  //logo的宽度缩放比(本身宽度/组合后的宽度)

            $logo_qr_height = $logo_height/$scale;  //组合之后logo的高度

            $from_width = ($QR_width - $logo_qr_width) / 2;     //组合之后logo左上角所在坐标点

            //重新组合图片并调整大小 

            imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, 

            $logo_qr_height, $logo_width, $logo_height); 

            //输出图片 
    
            imagepng($QR, $qrPath); 
            imagedestroy($QR);
            imagedestroy($logo);
        } 
        if(file_exists($qrPath))
            return 'qrcode/'. $name; 
        else
            return false;
    }
}